import { getAction, deleteAction, putAction, postAction, httpAction } from '@/api/manage'
import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"

////根路径
// const doMian = "/jeecg-boot/";
////图片预览请求地址
// const imgView = "http://localhost:8080/jeecg-boot/sys/common/view/";

//角色管理
const addRole = (params) => postAction("/sys/role/add", params);
const editRole = (params) => putAction("/sys/role/edit", params);
// const getRoleList = (params)=>getAction("/sys/role/list",params);
// const deleteRole = (params)=>deleteAction("/sys/role/delete",params);
// const deleteRoleList = (params)=>deleteAction("/sys/role/deleteBatch",params);
const checkRoleCode = (params) => getAction("/sys/role/checkRoleCode", params);
const queryall = (params) => getAction("/sys/role/queryall", params);

//用户管理  getQyId

const getQyId = (params) => getAction("/sys/user/getQyId", params);

const addUser = (params) => postAction("/sys/user/add", params);
const editUser = (params) => postAction("/sys/user/edit", params);
const queryUserRole = (params) => getAction("/sys/user/queryUserRole", params);
const getUserList = (params) => getAction("/sys/user/list", params);
// const deleteUser = (params)=>deleteAction("/sys/user/delete",params);
// const deleteUserList = (params)=>deleteAction("/sys/user/deleteBatch",params);
const frozenBatch = (params) => putAction("/sys/user/frozenBatch", params);
//验证用户是否存在
const checkOnlyUser = (params) => getAction("/sys/user/checkOnlyUser", params);
//改变密码
const changePassword = (params) => putAction("/sys/user/changePassword", params);

//权限管理
const addPermission = (params) => postAction("/sys/permission/add", params);
const editPermission = (params) => putAction("/sys/permission/edit", params);
const getPermissionList = (params) => getAction("/sys/permission/list", params);
/*update_begin author:wuxianquan date:20190908 for:添加查询一级菜单和子菜单查询api */
const getSystemMenuList = (params) => getAction("/sys/permission/getSystemMenuList", params);
const getSystemSubmenu = (params) => getAction("/sys/permission/getSystemSubmenu", params);
const getSystemSubmenuBatch = (params) => getAction('/sys/permission/getSystemSubmenuBatch', params)
    /*update_end author:wuxianquan date:20190908 for:添加查询一级菜单和子菜单查询api */

// const deletePermission = (params)=>deleteAction("/sys/permission/delete",params);
// const deletePermissionList = (params)=>deleteAction("/sys/permission/deleteBatch",params);
const queryTreeList = (params) => getAction("/sys/permission/queryTreeList", params);
const queryTreeListForRole = (params) => getAction("/sys/role/queryTreeList", params);
const queryListAsync = (params) => getAction("/sys/permission/queryListAsync", params);
const queryRolePermission = (params) => getAction("/sys/permission/queryRolePermission", params);
const saveRolePermission = (params) => postAction("/sys/permission/saveRolePermission", params);
//const queryPermissionsByUser = (params)=>getAction("/sys/permission/queryByUser",params);
const queryPermissionsByUser = (params) => getAction("/sys/permission/getUserPermissionByToken", params);
const loadAllRoleIds = (params) => getAction("/sys/permission/loadAllRoleIds", params);
const getPermissionRuleList = (params) => getAction("/sys/permission/getPermRuleListByPermId", params);
const queryPermissionRule = (params) => getAction("/sys/permission/queryPermissionRule", params);

// 部门管理
const queryDepartTreeList = (params) => getAction("/sys/sysDepart/queryTreeList", params);
const queryIdTree = (params) => getAction("/sys/sysDepart/queryIdTree", params);
const queryParentName = (params) => getAction("/sys/sysDepart/queryParentName", params);
const searchByKeywords = (params) => getAction("/sys/sysDepart/searchBy", params);
const deleteByDepartId = (params) => deleteAction("/sys/sysDepart/delete", params);

//二级部门管理
const queryDepartPermission = (params) => getAction("/sys/permission/queryDepartPermission", params);
const saveDepartPermission = (params) => postAction("/sys/permission/saveDepartPermission", params);
const queryTreeListForDeptRole = (params) => getAction("/sys/sysDepartPermission/queryTreeListForDeptRole", params);
const queryDeptRolePermission = (params) => getAction("/sys/sysDepartPermission/queryDeptRolePermission", params);
const saveDeptRolePermission = (params) => postAction("/sys/sysDepartPermission/saveDeptRolePermission", params);
const queryMyDepartTreeList = (params) => getAction("/sys/sysDepart/queryMyDeptTreeList", params);

//日志管理
//const getLogList = (params)=>getAction("/sys/log/list",params);
const deleteLog = (params) => deleteAction("/sys/log/delete", params);
const deleteLogList = (params) => deleteAction("/sys/log/deleteBatch", params);

//数据字典
const addDict = (params) => postAction("/sys/dict/add", params);
const editDict = (params) => putAction("/sys/dict/edit", params);
//const getDictList = (params)=>getAction("/sys/dict/list",params);
const treeList = (params) => getAction("/sys/dict/treeList", params);
// const delDict = (params)=>deleteAction("/sys/dict/delete",params);
//const getDictItemList = (params)=>getAction("/sys/dictItem/list",params);
const addDictItem = (params) => postAction("/sys/dictItem/add", params);
const editDictItem = (params) => putAction("/sys/dictItem/edit", params);
//const delDictItem = (params)=>deleteAction("/sys/dictItem/delete",params);
//const delDictItemList = (params)=>deleteAction("/sys/dictItem/deleteBatch",params);

//企业管理
const cxmEnterpriseTreeList = (params) => getAction("/cxm/cxmEnterprise/queryTreeList", params);
const cxmEnterpriseAdd = (params) => postAction("/cxm/cxmEnterprise/add", params);
const cxmEnterpriseList = (params) => getAction("/cxm/cxmEnterprise/getEnterprise", params);
const cxmEnterpriseTwo = (params) => getAction("/cxm/cxmEnterprise/getEnterpriseTwo", params);
const searchByCxmEnterprise = (params) => getAction("/cxm/cxmEnterprise/searchByCxmEnterprise", params);
const queryEnterpriseList = (params) => getAction("/cxm/cxmEnterprise/queryEnterpriseList", params);
const queryEnterprise = (params) => getAction("/cxm/cxmEnterprise/queryEnterprise", params);
const getEnterpriseList = (params) => getAction("/cxm/cxmEnterprise/getEnterpriseList", params);
const deleteEnterpriseId = (params) => deleteAction("/cxm/cxmEnterprise/delete", params);
const cxmOperationAddrList = (params) => getAction("/cxm/cxmOperationAddr/list", params);

//获取企业总览数据
const getEnterpriseNum = (params) => getAction("/cxm/cxmEnterprise/getEnterpriseNum", params);
//获取风险分析饼状图数据
const getCreditCorpMap = (params) => getAction("/cxm/cxmCreditCorp/getCreditCorpMap", params);
const getCreditCorpInfo = (params) => getAction("/cxm/cxmCreditCorp/getQycx", params);

const getCreditPersonInfo = (params) => getAction("/cxm/cxmCreditPerson/getQycx", params);


//查询资讯投诉饼图数据
const getPieMap = (params) => getAction("/cxm/cxmCreditCorp/getPieMap", params);
//查询企业交易记录占比
const getTransactionPie = (params) => getAction("/cxm/cxmTransaction/getTransactionPie", params);
//查询资讯投诉分类饼图数据
const getComplaintRecordMap = (params) => getAction("/cxm/cxmCreditCorp/getComplaintRecordMap", params);

//企业销售人员信息
const cxmSalesInfoList = (params) => getAction("/cxm/cxmSalesInfo/list", params);
const deleteSalesInfoId = (params) => deleteAction("/cxm/cxmSalesInfo/delete", params);
//企业交易记录信息
const getTransactionInfo = (params) => getAction("/cxm/cxmTransaction/getTransactionInfo", params);
const getTransaction = (params) => getAction("/cxm/cxmTransaction//getTransaction", params);
const getRankList = (params) => getAction("/cxm/cxmTransaction/getRankList", params);
const getSalesList = (params) => getAction("/cxm/cxmTransaction/getSalesList", params);

//订单管理
const getOrderManagerInfo = (params) => getAction("/cxm/cxmOrderManager/getOrderManagerInfo", params);
const getOrderManagerlist = (params) => getAction("/cxm/cxmOrderManager/list", params);

const getContractManagerInfo = (params) => getAction("/cxm/cxmContractManager/queryById", params);
const getContractManagerlist = (params) => getAction("/cxm/cxmContractManager/list", params);


const getDeliverManagerInfo = (params) => getAction("/cxm/cxmDeliverManager/queryById", params);
const getDeliverManagerlist = (params) => getAction("/cxm/cxmDeliverManager/list", params);

//授权书实体上传授权书
const importFile = (params) => postAction("/cxm/cxmAuthorizationFile/add", params);
//企业加盟关系
const queryByEnterpriseId = (params) => getAction("/cxm/cxmDealerRegrp/queryByEnterpriseId", params);

/**首页大屏数据**/
//保有量饼图
const picData = (params) => getAction("/cxm/cxmHomePage/picData", params);
//二手车交易数据
const getSecondHand = (params) => getAction("/cxm/cxmEtlTotalholdings/getSecondHand", params);
//流向图数据
const getFlow = (params) => getAction("/cxm/cxmHomePage/getFlow", params);
//咨询栏数据
const refLinkList = (params) => getAction("/cxm/cmsRefLink/list", params);
//经销商集团销售情况占比
const getTrading = (params) => getAction("/cxm/cxmHomePage/getTrading", params);
//本市范围内销售额监测
const getTradingNum = (params) => getAction("/cxm/cxmHomePage/getTradingNum", params);

//字典标签专用（通过code获取字典数组）
export const ajaxGetDictItems = (code, params) => getAction(`/sys/dict/getDictItems/${code}`, params);
//从缓存中获取字典配置
function getDictItemsFromCache(dictCode) {
    if (Vue.ls.get(UI_CACHE_DB_DICT_DATA) && Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode]) {
        let dictItems = Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode];
        return dictItems;
    }
}

//系统通告
const doReleaseData = (params) => getAction("/sys/annountCement/doReleaseData", params);
const doReovkeData = (params) => getAction("/sys/annountCement/doReovkeData", params);
//获取系统访问量
const getLoginfo = (params) => getAction("/sys/loginfo", params);
const getVisitInfo = (params) => getAction("/sys/visitInfo", params);
//数据日志访问
// const getDataLogList = (params)=>getAction("/sys/dataLog/list",params);

// 根据部门主键查询用户信息
const queryUserByDepId = (params) => getAction("/sys/user/queryUserByDepId", params);

// 查询用户角色表里的所有信息
// const queryUserRoleMap = (params)=>getAction("/sys/user/queryUserRoleMap",params);
// 重复校验
const duplicateCheck = (params) => getAction("/sys/duplicate/check", params);
// 加载分类字典
const loadCategoryData = (params) => getAction("/sys/category/loadAllData", params);
const checkRuleByCode = (params) => getAction('/sys/checkRule/checkByCode', params)
    //加载我的通告信息
const getUserNoticeInfo = (params) => getAction("/sys/sysAnnouncementSend/getMyAnnouncementSend", params);
const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponent(url)}`
    // 中转HTTP请求
export const transitRESTful = {
    get: (url, parameter) => getAction(getTransitURL(url), parameter),
    post: (url, parameter) => postAction(getTransitURL(url), parameter),
    put: (url, parameter) => putAction(getTransitURL(url), parameter),
    http: (url, parameter) => httpAction(getTransitURL(url), parameter),
}

export {
    // imgView,
    // doMian,
    addRole,
    editRole,
    checkRoleCode,
    addUser,
    getQyId,
    editUser,
    queryUserRole,
    getUserList,
    queryall,
    frozenBatch,
    checkOnlyUser,
    changePassword,
    getPermissionList,
    addPermission,
    editPermission,
    queryTreeList,
    queryListAsync,
    queryRolePermission,
    saveRolePermission,
    queryPermissionsByUser,
    loadAllRoleIds,
    getPermissionRuleList,
    queryPermissionRule,
    queryDepartTreeList,
    queryIdTree,
    queryParentName,
    searchByKeywords,
    deleteByDepartId,
    deleteLog,
    deleteLogList,
    addDict,
    editDict,
    treeList,
    addDictItem,
    editDictItem,
    doReleaseData,
    doReovkeData,
    getLoginfo,
    getVisitInfo,
    queryUserByDepId,
    duplicateCheck,
    queryTreeListForRole,
    getSystemMenuList,
    getSystemSubmenu,
    getSystemSubmenuBatch,
    loadCategoryData,
    checkRuleByCode,
    queryDepartPermission,
    saveDepartPermission,
    queryTreeListForDeptRole,
    queryDeptRolePermission,
    saveDeptRolePermission,
    queryMyDepartTreeList,
    getUserNoticeInfo,
    getDictItemsFromCache,
    cxmEnterpriseTreeList,
    searchByCxmEnterprise,
    queryEnterpriseList,
    deleteEnterpriseId,
    cxmSalesInfoList,
    cxmEnterpriseList,
    cxmEnterpriseTwo,
    cxmEnterpriseAdd,
    getTransactionInfo,
    deleteSalesInfoId,
    queryEnterprise,
    getEnterpriseNum,
    getTransaction,
    importFile,
    queryByEnterpriseId,
    getRankList,
    getCreditCorpMap,
    getCreditCorpInfo,
    getCreditPersonInfo,
    getPieMap,
    getComplaintRecordMap,
    getTransactionPie,
    getSalesList,
    picData,
    getFlow,
    refLinkList,
    getSecondHand,
    getTrading,
    getTradingNum,
    getEnterpriseList,
    cxmOperationAddrList,
    getOrderManagerInfo,
    getOrderManagerlist,
    getContractManagerInfo,
    getContractManagerlist,
    getDeliverManagerInfo,
    getDeliverManagerlist
}